package cn.edu.scau.sec.rw.model.disk_file.file;

import java.util.ArrayList;

/**
 * 文件夹，通过组合模式形成树状结构（文件夹作为套件）
 * 每个目录项8 个字节， 其中：
 *         目录名或文件名： 3 个字节；
 *         扩展名：1 个字节（ 可执行文件扩展名为e，目录没有扩展名）；
 *         目录属性、文件属性： 1 字节；
 *         起始盘号： 1 字节；
 *         文件长度： 2 字节。
 */
public class FileCatalog extends VirtualFile{

    private ArrayList<VirtualFile> childFiles;//子项
    private String message;//目录项信息

    public FileCatalog(String catalogName,String message) {
        super(catalogName, 64);
        childFiles = new ArrayList<>();
        this.message = message;
    }

    /**
     * 添加子目录
     * @param virtualFile
     */
    public void add(VirtualFile virtualFile){
        //防重名文件和文件夹
        for (VirtualFile childFile : childFiles) {
            if (virtualFile.getName().equals(childFile.getName()))
                return;
        }
        //每个磁盘块可以存八个目录项，所以子节点要小于8

        if (childFiles.size()<=8)
            childFiles.add(virtualFile);
    }

    /**
     * 删除子目录
     * @param virtualFile
     */
    public void remove(VirtualFile virtualFile){
        childFiles.remove(virtualFile);
    }

    /**
     * 获取子目录
     * @return
     */
    public ArrayList<VirtualFile> getChild(){
        return childFiles;
    }
}
